3.06. Cassandra
Разработчику
Аналитику
Тестировщику
Архитектору
Инженеру
Cassandra
★ Cassandra хранит данные в колонках, а не в строках. Подходит для огромных объёмов данных (в основном, Big Data). Данные хранятся на диске. На первый взгляд может показаться, что это такие же таблицы, как в SQL, но это не так. Применяется эта технология в аналитике (логи), интернете вещей (данные с датчиков), соцсетях. Сама по себе колоночная структура - вещь сложная, мы сначала рассмотрим SQL, а затем, в разделе по ClickHouse, посмотрим на колоночную структуру.
Для того, чтобы не путать эти три понятия:
- Cassandra является нереляционной NoSQL базой с колоночной структурой;
- ClickHouse является реляционной SQL-подобной базой с колоночной структурой;
- SQL-базы данных являются реляционными со строчной структурой.
Cassandra использует ширококолоночную модель данных (wide-column store), которая отличается от традиционных таблиц SQL. Данные организованы в виде ключей строк (row keys) , столбцов (columns) и значений (values). В отличие от реляционных баз данных, данные в Cassandra могут быть спроектированы для оптимизации чтения или записи.
Row Key: user123
Columns: name="Peter", age=30, city="New York"
Установка с официального сайта, а подключение идёт через консоль (cqlsh).
Администрирование выполняется при помощи графических инструментов:
- DataStax DevCenter;
- DBeaver (там есть поддержка Cassandra).
Фреймворки: cassandra-driver, Spring Data Cassandra.
Это распределённая NoSQL база данных, которая хранит данные на нескольких узлах (серверах) в кластере, и использует децентрализованную архитектуру без единой точки отказа (masterless architecture). Каждый узел в кластере может обрабатывать запросы на чтение и запись. Схема данных в Cassandra не фиксирована, что позволяет легко адаптироваться к изменениям в структуре данных. Cassandra оптимизирована для операций записи. Запись данных происходит очень быстро благодаря логической структуре commit log и memtable.
Для работы с данными используется CQL (Cassandra Query Language). Он очень похож на SQL, но в нём нет JOIN-ов, поддержки транзакций и имеется поддержка только первичных ключей для выборки данных. А так, в целом, основные операции там такие же (CRUD, агрегатные функции, к примеру). Мы рассмотрим SQL отдельно, так что особенности языка узнаем оттуда.
Официальный сайт Cassandra - https://cassandra.apache.org/